﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace Arthus
{
    public partial class dostavnicaForma : Form
    {
        public static int IDzaglavlja;
        public dostavnicaForma(int zaglavljeID) // konstruktor
        {
            InitializeComponent();
            IDzaglavlja = zaglavljeID;
            //postavljanje dateTimePicker-a na danasnji datum
            dateTimePickerDatumUnosa.Value = System.DateTime.Now;
            dateTimePickerDatumDokumenta.Value = System.DateTime.Now;
            //punjenje combobox-ova
            posjedObjekat.PopuniComboBoxVeleprodaja(comboBoxIzVeleprodaje);
            posjedObjekat.PopuniComboBoxMaloprodaja(comboBoxUMaloprodaju);
            //pri ulasku u formu checkbox je cekiran
            checkBoxAutoBrojDokumenta.Checked = true;
            //poziv metode koja iskljucuje ili ukljucuje pojedina polja u zavisnosti od toga dal je IDzaglavlja popunjen ili ne
            ProveraProknjizenostiDostavnice();
        }
        Posjed posjedObjekat = new Posjed();
        ZAG zagObjekat = new ZAG();
        STV stvObjekat = null;
        stavkaDostavnice stavkaDostavniceObjekat = null;

        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;

        private void buttonUnesi_Click(object sender, EventArgs e) //desava se kada se klikne na dugme Unesi
        {
            zagObjekat.UbaciUZAGzaVDS("VDS", dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, 
                textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            //postavljanje statickog IDzaglavlja da ima zagObjekat.VratiPovecanID()-1
            dostavnicaForma.IDzaglavlja = zagObjekat.VratiPovecanID() - 1;
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleDostavnice(dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            ProveraProknjizenostiDostavnice();
            buttonDodajStavku.Focus();
        }

        private void PromenaCheckBoxAutoBrojDokumenta() { //metoda koja menja vizibilnost textbox-ova automatskog broja dokumenta
            if (checkBoxAutoBrojDokumenta.Checked == true)
            {
                //ako je cekiran checkBoxAutoBrojDokumenta
                textBoxAutomatskiBrojDokumenta1.Enabled = false;
                textBoxAutomatskiBrojDokumenta2.Enabled = false;
            }
            else {
                //ako nije cekiran
                textBoxAutomatskiBrojDokumenta1.Enabled = true;
                textBoxAutomatskiBrojDokumenta2.Enabled = true;
            }
        }
        private void checkBoxAutoBrojDokumenta_CheckedChanged(object sender, EventArgs e)
        {
            PromenaCheckBoxAutoBrojDokumenta();
        } //desava se pri promeni checkbox-a

        private void dostavnicaForma_Load(object sender, EventArgs e)//desava se kada se forma ucita
        {
            //poziv metode zag.PopuniKontroleDostavnice
            zagObjekat.PopuniKontroleDostavnice(dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            //poziv metode za punjenje dataGridViewDostavnica
            stvObjekat = new STV();
            stvObjekat.StavkeDostavnicePopuniGridView(dataGridViewStavkeDostavnice, zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja));
            ProveraProknjizenostiDostavnice();
        }

        public void ProveraProknjizenostiDostavnice() {
            zagObjekat = new ZAG();
            if (IDzaglavlja == 0)
            {
                buttonUnesi.Enabled = true;
                buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                buttonIzmeniStavku.Enabled = false;
                buttonObrisiStavku.Enabled = false;
                buttonKnjizenje.Enabled = false;

                comboBoxIzVeleprodaje.Enabled = true;
                comboBoxUMaloprodaju.Enabled = true;
                textBoxAutomatskiBrojDokumenta1.ReadOnly = false;
                textBoxAutomatskiBrojDokumenta2.ReadOnly = false;
            }
            else if (zagObjekat.ProveraProknjizenDokumentIliNe(dostavnicaForma.IDzaglavlja))
            {
                labelProknjizenIliNe.Text = "Dostavnica je proknjižena";
                buttonUnesi.Enabled = false;
                buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                buttonIzmeniStavku.Enabled = false;
                buttonObrisiStavku.Enabled = false;
                buttonKnjizenje.Enabled = true;

                comboBoxIzVeleprodaje.Enabled = false;
                comboBoxUMaloprodaju.Enabled = false;
                textBoxAutomatskiBrojDokumenta1.ReadOnly = true;
                textBoxAutomatskiBrojDokumenta2.ReadOnly = true;
            }
            else
            {
                labelProknjizenIliNe.Text = "Dostavnica nije proknjižena";
                buttonUnesi.Enabled = false;
                buttonIzmeni.Enabled = true;
                buttonDodajStavku.Enabled = true;
                buttonIzmeniStavku.Enabled = true;
                buttonObrisiStavku.Enabled = true;
                buttonKnjizenje.Enabled = true;
                if (dataGridViewStavkeDostavnice.RowCount <= 0)
                {
                    buttonDodajStavku.Enabled = true;
                    buttonIzmeniStavku.Enabled = false;
                    buttonObrisiStavku.Enabled = false;
                    buttonKnjizenje.Enabled = false;
                }
            }
        }

        private void buttonZatvori_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonDodajStavku_Click(object sender, EventArgs e) //kada se klikne na dugme Dodaj
        {
            stvObjekat = new STV();
            stavkaDostavniceObjekat = new stavkaDostavnice("", "");
            stavkaDostavniceObjekat.ShowDialog();
            //radnja dok je ukljucena forma - pocetak
            //poziv metode zag.PopuniKontroleDostavnice
            zagObjekat.PopuniKontroleDostavnice(dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            //poziv metode za punjenje dataGridViewDostavnica
            stvObjekat = new STV();
            stvObjekat.StavkeDostavnicePopuniGridView(dataGridViewStavkeDostavnice, zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja));
            ProveraProknjizenostiDostavnice();
            //radnja dok je ukljucena forma - kraj
            stavkaDostavniceObjekat.Dispose();
        }

        private void buttonIzmeniStavku_Click(object sender, EventArgs e) //kada se klikne na dugme Izmeni kod stavki Dostavnice
        {
            stavkaDostavniceObjekat = new stavkaDostavnice(dataGridViewStavkeDostavnice.SelectedRows[0].Cells[1].Value.ToString(), 
                dataGridViewStavkeDostavnice.SelectedRows[0].Cells[5].Value.ToString());
            stavkaDostavniceObjekat.ShowDialog();
        }

        private void dataGridViewStavkeDostavnice_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            stavkaDostavniceObjekat = new stavkaDostavnice(dataGridViewStavkeDostavnice.SelectedRows[0].Cells[1].Value.ToString(),
                dataGridViewStavkeDostavnice.SelectedRows[0].Cells[5].Value.ToString());
            stavkaDostavniceObjekat.ShowDialog();
        }

        private void dostavnicaForma_FormClosing(object sender, FormClosingEventArgs e) //kada se forma gasi
        {
            IDzaglavlja = 0;
        }

        private void dostavnicaForma_Activated(object sender, EventArgs e)
        {
            stvObjekat = new STV();
            stvObjekat.StavkeDostavnicePopuniGridView(dataGridViewStavkeDostavnice, zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja));
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleDostavnice(dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            stvObjekat.PopuniVrednostiZaPunjenjeTextBoxOvaDostavnicaForma(dataGridViewStavkeDostavnice, textBoxVeleprodajnaVrednost, textBoxVeleprodajniRUC,
                textBoxUkalkulisaniRUC, textBoxUkalkulisaniPDV, textBoxMaloprodajnaVrednost, textBoxMaloprodajnaNivelacija, 
                zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja));
            ProveraProknjizenostiDostavnice();
        }

        private void buttonObrisiStavku_Click(object sender, EventArgs e) //kada se klikne na dugme Obrisi za stavke
        {
                stvObjekat = new STV();
                stvObjekat.ObrisiStavkuPremaID(Convert.ToInt32(dataGridViewStavkeDostavnice.SelectedRows[0].Cells[1].Value.ToString()));
                stvObjekat.ObrisiStavkuPremaID2(Convert.ToInt32(dataGridViewStavkeDostavnice.SelectedRows[0].Cells[1].Value.ToString()));
                MessageBox.Show("Stavka je uspešno obrisana ");
        }

        private void buttonIzmeni_Click(object sender, EventArgs e) //kada se klikne na dugme Izmeni za dostavnicu
        {
            zagObjekat = new ZAG();
            zagObjekat.IzmeniUZAGzaVDS("VDS", dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju,
                textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleDostavnice(dateTimePickerDatumUnosa, comboBoxIzVeleprodaje, comboBoxUMaloprodaju, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta);
            ProveraProknjizenostiDostavnice();
        }

        private void textBoxAutomatskiBrojDokumenta1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void textBoxAutomatskiBrojDokumenta2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void buttonStampanje_Click(object sender, EventArgs e)
        {
            if (dataGridViewStavkeDostavnice.RowCount > 0)
            {
                zagObjekat = new ZAG();
                this.Cursor = Cursors.WaitCursor;
                dostavnicaStampanjeForma dostavniceStampanjeFormaObjekat = new dostavnicaStampanjeForma(dataGridViewStavkeDostavnice.Rows[0].Cells[1].Value.ToString(),
                    dataGridViewStavkeDostavnice.Rows[dataGridViewStavkeDostavnice.RowCount - 1].Cells[1].Value.ToString(), 
                    zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja), zagObjekat.VratiPreduzeceIDNaOsnovuZAGID(IDzaglavlja));
                dostavniceStampanjeFormaObjekat.ShowDialog();
                this.Cursor = Cursors.Default;
            }
            else {
                MessageBox.Show("Morate imati neke stavke da bi ste štampali");
            }
        }

        private void buttonKnjizenje_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            zagObjekat=new ZAG();
            int finID = zagObjekat.VratiIDFINnalogaNaOsnovuZAGID(IDzaglavlja);
            if(zagObjekat.VratiVrstuZaglavljaNaOsnovuID(IDzaglavlja).Equals("VDS")){
                //ukoliko knjizimo dostavnicu
            decimal dugujePotrazuje = Convert.ToDecimal(textBoxUkalkulisaniPDV.Text) + Convert.ToDecimal(textBoxVeleprodajniRUC.Text) + Convert.ToDecimal(textBoxUkalkulisaniRUC.Text);
            knjizenjeDokumenataForma knjizenjeDostavnicaFormaObjekat = new knjizenjeDokumenataForma(IDzaglavlja.ToString(), finID, dugujePotrazuje, dugujePotrazuje, 
                Convert.ToDecimal(textBoxVeleprodajnaVrednost.Text), Convert.ToDecimal(textBoxVeleprodajniRUC.Text), Convert.ToDecimal(textBoxUkalkulisaniRUC.Text), 
                Convert.ToDecimal(textBoxUkalkulisaniPDV.Text), Convert.ToDecimal(textBoxMaloprodajnaVrednost.Text), Convert.ToDecimal(textBoxMaloprodajnaNivelacija.Text));
            knjizenjeDostavnicaFormaObjekat.ShowDialog();
            this.Cursor = Cursors.Default;
            }
        }

        private void TABkaoENTER(KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                SelectNextControl(ActiveControl, true, true, true, true);
            }
        }

        private void comboBoxIzVeleprodaje_KeyDown(object sender, KeyEventArgs e)
        {
            TABkaoENTER(e);
        }

        private void textBoxPoDokumentu_KeyDown(object sender, KeyEventArgs e)
        {
            TABkaoENTER(e);
        }
    }
}
